package cn.codeartist.wechat.qywx.service.auth;

import cn.codeartist.wechat.qywx.entity.dto.auth.QywxAccessTokenDTO;

/**
 * 企业微信权限相关接口
 *
 * @author 艾江南
 * @date 2020/7/28
 */
public interface QywxAuthService {

    /**
     * 获取access_token
     * <p>
     * 注意事项：
     * - 开发者需要缓存access_token，用于后续接口的调用（注意：不能频繁调用gettoken接口，否则会受到频率拦截）。当access_token失效或过期时，需要重新获取。
     * - access_token的有效期通过返回的expires_in来传达，正常情况下为7200秒（2小时），有效期内重复获取返回相同结果，过期后获取会返回新的access_token。
     * - 由于企业微信每个应用的access_token是彼此独立的，所以进行缓存时需要区分应用来进行存储。
     * - access_token至少保留512字节的存储空间。
     * - 企业微信可能会出于运营需要，提前使access_token失效，开发者应实现access_token失效时重新获取的逻辑。
     *
     * @param corpsecret 应用的凭证密钥，获取方式参考：https://work.weixin.qq.com/api/doc/90000/90135/90665#secret
     * @return access_token
     */
    QywxAccessTokenDTO getAccessToken(String corpsecret);

    /**
     * 获取通讯录管理access_token
     *
     * @return access_token
     */
    String getContactAccessToken();
}
